using System;
using System.Collections.Generic;
using System.Text;
using TgcViewer;
using Microsoft.DirectX.Direct3D;
using Microsoft.DirectX;

namespace AlumnoEjemplos.TP3D
{
    class Saltando : EstadoMario
    {
        #region EstadoMario Members
        Vector3 _velocidadSalto;

        public Saltando(Vector3 velocidadSalto)
        {
            this._velocidadSalto = velocidadSalto;
        }

        public void Avanza(Mario mario)
        {
            
        }

        public void Retrocede(Mario mario)
        {
            
        }

        public void Salta(Mario mario)
        {
            
        }

        public void Update(Mario mario, float elapsedTime)
        {
            this._velocidadSalto = PhysicsUtils.ProximaVelocidad(this._velocidadSalto, new Vector2() , elapsedTime);
            
            mario.MoveTo(_velocidadSalto);

            float z = (float)Math.Cos((float)mario.Mesh.Rotation.Y) * mario.Velocidad.Z;
            float x = (float)Math.Sin((float)mario.Mesh.Rotation.Y) * mario.Velocidad.Z;

            mario.Mesh.move(x, (mario.Velocidad.Y + mario.Position.Y <= -45) ? (-45 - mario.Position.Y) : mario.Velocidad.Y, z);
            if (mario.EstasEnElPiso())
            {
                mario.Estado = new EnElPiso();
                mario.Velocidad = Mario.MOVIMIENTO_NULO;
            }
        }

        public void Init(Mario mario)
        {
            mario.Rotacion = Mario.VELOCIDAD_ROTACION_INCIAL;
        }

        #endregion
    }
}
